export default {
	//import引入的组件需要注入到对象中才能使用
	components: {},
	data() {
		//这里存放数据
		return {
			config: {
				time: ['06:00:00','18:00:00'], // 每天几点执行
				runNow: false, // 是否立即执行
				timeOutTimer: ''
			}
		};
	},
	//监听属性 类似于data概念
	computed: {},
	//监控data中的数据变化
	watch: {},
	//生命周期 - 创建完成（可以访问当前this实例）
	created() {

	},
	//生命周期 - 挂载完成（可以访问DOM元素）
	mounted() {
		this.setTimedTask();
	},
	beforeCreate() {}, //生命周期 - 创建之前
	beforeMount() {}, //生命周期 - 挂载之前
	beforeUpdate() {}, //生命周期 - 更新之前
	updated() {}, //生命周期 - 更新之后
	beforeDestroy() {
		// 清除定时器timeout
		clearTimeout(this.config.timeOutTimer)
	}, //生命周期 - 销毁之前
	destroyed() {}, //生命周期 - 销毁完成
	activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发
	//方法集合
	methods: {
		// 设置定时任务
		setTimedTask() {
			// console.log("设置定时任务=====>");
			// 默认为false，true为立即触发，看你的需求，如果设置为true则立刻运行任务函数
			if (this.config.runNow) {
			  this.timeTaskFn()
			}
			// 获取下次要执行的时间，如果执行时间已经过了今天，就让把执行时间设到明天的按时执行的时间
			const nowTime = new Date().getTime()

			let durTimes = [];

			this.config.time.forEach(time=>{
				let timePoint = time.split(':').map((i) => parseInt(i));
				let recent = new Date().setHours(...timePoint)
				if (recent <= nowTime) {
					recent += 24 * 60 * 60 * 1000
				}
				let doRunTime = recent - nowTime;
				durTimes.push(doRunTime);
			})
			//取执行时间中最近的执行时间
			let nearly = Math.min(...durTimes);
			// console.log(nearly,durTimes);
			this.config.timeOutTimer = setTimeout(this.setTimer, nearly)
	   	},
	   
	   
		// 设置定时器
		setTimer () {
			// console.log('进入定时任务==========>')
			//执行时间任务
			this.timeTaskFn()
			//重设定时器
			this.setTimedTask();
		},
	   
	   
		// 你的业务函数 这里列举的是刷新浏览器
		timeTaskFn() {
			// console.log('触发定时任务函数了=====>')
			this.getWeather()
		}
	},
}